package com.example.chess.bean;

/**
 * 棋子的抽象类
 * Created by xuyougen.
 */
public abstract class Chess {

    //棋子所在的行、列位置
    public final int row, column;

    public Chess(int row, int column) {
        this.row = row;
        this.column = column;
    }

    /**
     * 获取棋子的填充色
     *
     * @return 填充色
     */
    public abstract int getFillColor();

    /**
     * 获取棋子的描边色
     *
     * @return 描边色
     */
    public abstract int getStrokeColor();

    /**
     * 获取当前棋子的类型
     *
     * @return 棋子的类型
     */
    public abstract Type getChessType();

    /**
     * 是否为同一类型的棋子
     *
     * @param chess 要被比较的棋子
     * @return true 为同一类型的棋子
     */
    public boolean isSameType(Chess chess) {
        return getChessType() == chess.getChessType();
    }

    /**
     * 反转棋子类型
     *
     * @param type 要反转的棋子类型
     * @return 反转后的棋子类型
     */
    public static Type reverseType(Type type) {
        return type == Chess.Type.BLACK ?
                Chess.Type.WHITE : Chess.Type.BLACK;
    }

    /**
     * 棋子类型
     */
    public enum Type {
        BLACK, WHITE
    }

}
